Business Process Management Suites (BPMS) generally rely on proprietary runtime formats tuned to automate and execute business processes. Both performance and resource consumption key performance indicators (KPIs) are associated with the choice of an appropriate runtime format. For example, SAP's NetWeaver BPMS employs “Trigger Networks” (TN), a RETE graph representing event-condition-action (ECA) rules. Process steps (e.g., BPMN entities such as activities, gateways, and events, etc.) can each be logically broken down into a group of ECA rules that are represented as a TN sub-graph. Each TN sub-graph may comprise mutually connected named operator nodes (of types, source nodes, target nodes, filter nodes, join nodes, projection nodes, etc.). Each node type may require a propriety configuration that is part of the TN. For instance, join nodes may be equipped with a join condition, filter nodes may have a filter predicate, target nodes may be bound to a transition script, and so on.
Apart from operator graphs, TNs comprise type definitions for status variables and configuration data for runtime components (“adapter configurations”) that interact with the BPMS runtime. Status variables are plain records of named attributes. For example:
class Process {Process owner;Boolean suspended;long start_time;void terminateChildProcess( );}
In the example above, the class “Process” comes with three attributes named “owner,” “suspended,” and “start_time.” The attributes “suspended” and “start_time” have primitive types, whereas “owner” is a reference pointing to another “Process” instance. The class also provides for a method “terminateChildProcesses” which can be called by transition scripts and whose implementation is provided by the adapter that governs the type “Process.” An adapter configuration is an XML document (i.e. a tree structure of nodes and values). An adapter provides connectivity of the BPMS runtime to some external component/application/system. For instance, the adapter that owns the “Process” type connects the BPMS runtime to a process administration and monitoring application.
A compiler component may be responsible for translating a BPMN-based process model (or any other BPM metamodel, such as BPEL, UML state charts, XPDL, etc.) into a TN comprising type definitions for status variables, operator graphs, and adapter configurations. The compiler component may exist at or may be used by a software developer or other third-party apart from the customer executing the TN at runtime. During a process' lifecycle, a reason for changing at least a portion of a TN may arise. Reasons may include BPMS release updates, bug fixes, performance optimizations, and operation modifications. Generally, changes made atop these TN process binaries incur significant costs, as a special-purpose migration controller may be necessary to perform the modifications or alter the operations of the process binaries. Additionally, risks associated with the modification may increase due to the fact that proprietary migration controllers acting upon complex binaries such as TNs are inherently complex. In particular, migration controllers must ensure that the resulting TNs remain syntactically and semantically correct after modifications are made. The migration controller must identify the TN building blocks that are to be altered, and then perform the corresponding change without affecting the operations of the rest of the TN.